<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.用for循环模拟 some 和 every 的实现 
        // every &&  some  : ||
        // var arr = [false, false, true, true];
        // // var res = arr.every(function (item, key, arr) {
        // //     console.log(item, key, arr)
        // //     return item;
        // // })
        // // console.log(res)

        // var res = arr.some(function(item,key,arr){
        //     console.log(item,key,arr);
        //     return item;
        // })

        // console.log(res);

        // 2.reduce : 累加器 

        // 一、数字的累加
        // var arr = [1,2,3,4];
        // // pre 是上次的累加结果 current 是当前循环的值 index 索引
        // // 0 初始累加的值
        //  var res =  arr.reduce(function(pre,current,index){
        //      console.log(pre,current,index)
        //     return pre + current;
        // },0)
        // console.log(res);


        // 二、数组的累加操作
        //     var arr = [1,2,3,4];

        //    var res =  arr.reduce(function(pre,current){
                // pre.push(current+'');
        //         return pre;
        //     },[]);
        //     console.log(res);

        // 三 、对象的累加
        var arr = [1, 2, 3, 4];
        var res = arr.reduce(function (pre, current) {
            pre[current] = current;
            return pre;
        }, {})
        // {1:1,2:2,3:3,4:4}
        console.log(res);


        // 1.通过reduce 给数组去重复 
        // 这里没写

        // ——————————————————————————————————————————————————————————————————————————————————————
        // 2.var str = "abcabccaaa";  ----> {a:5,b:2,c:3}

        // var str = "abcabccaaa";
        // // console.log(str[1])
        // var arr = [];
        // for(var i=0;i<str.length;i++){
        //     arr.push(str[i]);
        // }
        // // 把字符串转换成数组
        // console.log(arr);

        // var res =  arr.reduce(function(pre,current){
        //     // pre[current] = 1;
        //     // {a:1,b:1,c:1}
        //     // 核心： 判断 current ：a b c 存不存在？如果不存在 初始化一个 a:1 b:1 c:1
        //     // 存在 在以前的基础上 加一 a:1 ++ --->a:2
        //     typeof pre[current] === "undefined"?pre[current]=1:pre[current]++;
        //     return pre;
        // },{});
        // console.log(res);
        // ——————————————————————————————————————————————————————————————————————————————————

        // var str = "abcabccaaa";

        // 对象的键名是不能重复的。
        // var obj = {
        //     name1:"张三",
        //     name1:"李四",
        //     age:20,
        //     age:30
        // }
        // console.log(obj);

        // ————————————————————————————————————————————————
        // var arr = [1,2,2,3,2,4,3,5];

        // var obj = {};
        // for(var i=0;i<arr.length;i++){
        //     obj[arr[i]] = 1;
        // }
        // console.log(obj);

        // var newarr = [];
        // for(var key in obj){
        //     newarr.push(parseInt(key));
        // }
        // console.log(newarr);
        // // 转数字 ：1.Number  2. parseInt 3.paseFloat 4.非加的运算符
        // var str = "100px";
        // console.log( Number(str));
        // console.log(parseInt(str));

        //————————————————————————————————————————————————————————————————————————————————
        // 通过for循环来统计字符出现的次数。
        // var str = "abcabccaaa";
        // var obj = {};
        // for(var i=0;i<str.length;i++){
        //     // 判断obj里有没有 字符的键名 如果没有 就初始化为 1 ，如果有 就在这个基础上加一；
        //     if(typeof obj[str[i]]=== "undefined"){
        //         obj[str[i]] = 1;
        //     }else{
        //         obj[str[i]]++
        //     }
        // }

        // console.log(obj);


        //数组去重
        var arr = [1, 2, 3, 2, 3, 2, 1, 4, 5, 5];
        // var newarr = []; // 存储不重复的元素；
        // for(var i=0;i<arr.length;i++){
        //     if(newarr.indexOf(arr[i])===-1){
        //         newarr.push(arr[i]);
        //     }
        // }
        // console.log(newarr);

        // ${变量} 插值表达式  #{}  {{}}  {} {$变量} <%=变量%>
        var res = arr.reduce(function (pre, current) {
            pre.indexOf(current) === -1 ? pre.push(current) : null;
            return pre;
        }, []);
        console.log(res);

    </script>
</body>

</html>